package org.seckill.service;

import org.seckill.dto.Exposer;
import org.seckill.dto.SeckillExecution;
import org.seckill.entity.Seckill;
import org.seckill.exception.RepeatKillException;
import org.seckill.exception.SeckillCloseException;
import org.seckill.exception.SeckillException;

import java.util.List;

/**
 * 业务接口：站在 "使用者"角度设计接口
 * 三个方面：方法定义粒度 ，参数，返回类型｛return 类型友好/异常｝
 *
 * Created by Administrator on 2016/7/26.
 */
public interface SeckillService {


    /**
     * 查询所有杀记录
     *
     * @return
     */
    List<Seckill> getSeckillList();


    /**
     * 查询单个秒杀记录
     * @param seckill
     * @return
     */
    Seckill getById(long seckillId);

    /**
     * 秒杀开启时，输出秒杀接口雷地址
     * 否则输出系统时间和秒杀时间
     * @param seckillId
     */

    Exposer exportSeckillUrl(long seckillId);


    SeckillExecution executeSeckill(long seckillId, long userPhone, String md5)
            throws SeckillException,RepeatKillException,SeckillCloseException;


}
